package es.unileon.rnag.jgen.operadores;

import java.util.*;
import es.unileon.rnag.jgen.*;

/**
 * Clase que implementa el operador de selecci&oacute;n aleatoria
 * @author Abel Mayorga Gonz&aacute;lez
 * @author Sergio Fern&aacute;ndez Mart&iacute;nez
 * @version 1.0
 */
public class SeleccionAleatoria extends Seleccion {

	/**
	 * Constructor
	 * @param porcentaje: Porcentaje de seleccionados en tanto por uno
	 */
	public SeleccionAleatoria(float porcentaje){
		super(porcentaje);
	}
	
	@Override
	public List<Cromosoma> operar(int generacion, List<Cromosoma> poblacion){
		List<Cromosoma> seleccionados = new ArrayList<Cromosoma>();
		//numero de cromosomas que se seleccionaran
		int nSujetos = (int)Math.floor(_porcentaje*poblacion.size());
		//Se escogen aleatoriamente, se clonan y se meten en la lista de seleccionados
		for(int i = 0; i < nSujetos; i++){
			int aleatorio = (int)(Math.random()*nSujetos);
			seleccionados.add(poblacion.get(aleatorio).clonar());
		}
		return seleccionados;
	}
}
